package betandregret.interfaces;

import java.util.Calendar;

/**
 * 
 * Interface fuer die Verwaltung von Bet & Regret
 * 
 * Dieses Interface darf nicht veraendert werden.
 * 
 * @author daniel
 */
public interface IBetAndRegret {

	/**
	 * Diese Methode liefert Ihre Gruppennummer (inkl. Tutoriumsnummer) zurueck.
	 * In der Form: Txx-yy
	 * 
	 * @return Ihre Gruppennummer (inkl. Tutoriumsnummer)
	 */
	public String getGruppenNummer();

	/**
	 * Diese Methode liefert das Objekt der Kundenboundary.
	 * 
	 * @return Die IKundenBoundary Ihrer Implementierung
	 */
	public IKundenBoundary getKundenBoundary();

	/**
	 * Diese Methode liefert das Objekt der Mitarbeiterboundary.
	 * 
	 * @return Die IMitarbeiterBoundary Ihrer Implementierung
	 */
	public IMitarbeiterBoundary getMitarbeiterBoundary();

	/**
	 * Diese Methode wird vor dem Starten der Applikation ausgefuehrt. Hier wird
	 * das System in einen startbereiten Zustand versetzt.
	 */
	public void initialisieren();

	/**
	 * Diese Methode wird vor dem Beenden der Applikation ausgefuehrt. Bei
	 * erneutem Initialisieren duerfen keine Daten eines vorherigen Durchlaufs
	 * mehr vorhanden sein.
	 */
	public void shutDown();

	/**
	 * Diese Methode setzt das uebergebene Datum als aktuelles Datum im System.
	 * Wurde das System initialisiert, aber kein explizites Datum gesetzt, wird
	 * das aktuelle Datum Ihres Betriebssystems angenommen. Das Setzen des Datums funktioniert immer,
	 * es sollen keine Bedingungen ueber Spiele, Wetten und Ergebnisse geprueft
	 * werden.
	 * 
	 */
	public void setDatum(Calendar datum);

	/**
	 * Diese Aufzaehlung beinhaltet alle Systemereignisse.
	 */
	public enum Systemereignis {
		STARTZEIT_LIEGT_NICHT_IN_DER_ZUKUNFT, SPORTARTEN_DER_TEAMS_VERSCHIEDEN, TEAM_SPIELT_BEREITS, TEAM_NICHT_BETEILIGT, 
		SPIEL_NOCH_NICHT_BEENDET, ERGEBNIS_ERFOLGREICH_EINGETRAGEN_KUNDEN_INFORMIERT, ERGEBNIS_ERFOLGREICH_EINGETRAGEN, WETTE_ERFOLGREICH_PLATZIERT, 
		BEREITS_AUF_SPIEL_GEWETTET, SPIEL_BEREITS_BEGONNEN, WETTEINSATZ_ZU_GERING, WETTE_ERFOLGREICH_ZURUECKGEZOGEN, WETTE_EXISTIERT_NICHT
	}

}
